area2province = {
    "华北地区": {"北京市", "天津市", "河北省", "山西省", "内蒙古自治区"},
    "东北地区": {"黑龙江省", "吉林省", "辽宁省"},
    "华东地区": {"上海市", "江苏省", "浙江省", "安徽省", "江西省", "山东省", "福建省，以及台湾省"},
    "华中地区": {"河南省", "湖北省", "湖南省"},
    "华南地区": {"广东省", "广西壮族自治区", "海南省，以及香港特别行政区", "澳门特别行政区"},
    "西南地区": {"重庆市", "四川省", "贵州省", "云南省", "西藏自治区"},
    "西北地区": {"陕西省", "甘肃省", "青海省", "宁夏回族自治区", "新疆维吾尔自治区"},
}

province2area = {}
[[province2area.update({value: key}) for value in values] for key, values in area2province.items()]



def get_region_area_mapping_stage():
    return {
        "$addFields": {
            "region.area": {
                "$switch": {
                    "branches": [{"case": {"$in": ["$region.province", list(v)]}, "then": k} for k, v in
                                 area2province.items()],
                    "default": "其他"
                }
            }
        }
    }


if __name__ == '__main__':
    import json

    print(json.dumps(get_region_area_mapping_stage(), ensure_ascii=False))
